Expand description
Openraft
§API status
Openraft API is currently unstable.
Incompatibilities may arise in upgrades prior to 1.0.0
.
Refer to our Change-Log for details.
Upgrade Guides explains how to upgrade.
Each commit message begins with a keyword indicating the type of change:
DataChange:
Changes to on-disk data types, possibly requiring manual upgrade.Change:
Introduces incompatible API changes.Feature:
Adds compatible, non-breaking new features.Fix:
Addresses bug fixes.
§Openraft Document
If you’re starting to build an application with Openraft, check out
To maintain an Openraft cluster, e.g., add or remove nodes, refer to
cluster_control
:cluster_formation
describes how to form a cluster;dynamic membership
describes how to add or remove nodes without downtime;node lifecycle
describes the transition of a node’s state;
When upgrading an Openraft application, consult:
To learn about the data structures used in Openraft and the commit protocol, see
feature_flags
;data
:Vote
is the core in a distributed system;Log pointers
shows how Openraft tracks entries in the log;Extended membership
explains how members are organized in Openraft;Effective membership
explains when membership config takes effect;
protocol
:
Contributors who want to understand the internals of Openraft can find relevant information in
internal
:- Architecture shows the overall architecture of Openraft;
- Threading describes the threading model of Openraft;
Finally, the archived and discarded documents:
obsolete
describes obsolete design documents and why they are discarded;
Modules§
- This mod is a upgrade helper that provides functionalities for a newer openraft application to read data written by an older application.
- Error types exposed by this crate.
- This mod defines the identity of a raft log and provides supporting utilities to work with log id related types.
- Raft metrics for observability.
- The Raft network interface.
- Public Raft interface and data types.
- The Raft storage interface and data types.
- Openraft Document
Re-exports§
pub use network::RPCTypes;
pub use network::RaftNetwork;
pub use network::RaftNetworkFactory;
Enums§
- Defines various actions to change the membership, including adding or removing learners or voters.
Structs§
- The runtime configuration for a Raft node.
Enums§
- Error variants related to configuration.
- Log compaction and snapshot policy.
- All possible states of a Raft node.
Re-exports§
pub use crate::entry::Entry;
pub use crate::entry::EntryPayload;
pub use crate::log_id::LogId;
pub use crate::log_id::LogIdOptionExt;
pub use crate::log_id::LogIndexOptionExt;
pub use crate::log_id::RaftLogId;
Structs§
- The currently active membership config.
- The membership configuration of the cluster.
- This struct represents information about a membership config that has already been stored in the raft logs.
Re-exports§
pub use crate::metrics::RaftMetrics;
Structs§
- An implementation of trait
Node
that contains minimal node information. - EmptyNode is an implementation of trait
Node
that contains nothing.
Traits§
- A Raft
Node
, this trait holds all relevant node information. - A Raft node’s ID.
Re-exports§
pub use crate::raft::Raft;
pub use crate::raft::RaftTypeConfig;
Structs§
- The state of membership configs a raft node needs to know.
- A struct used to represent the raft state which a Raft node needs.
Type Aliases§
- Id of a snapshot stream.
Structs§
- The identity of a segment of a snapshot.
Re-exports§
pub use crate::storage::LogState;
pub use crate::storage::RaftLogReader;
pub use crate::storage::RaftSnapshotBuilder;
pub use crate::storage::RaftStorage;
pub use crate::storage::Snapshot;
pub use crate::storage::SnapshotMeta;
pub use crate::storage::StorageHelper;
Structs§
- An error that occurs when the RaftStore impl runs defensive check of input or output. E.g. re-applying an log entry is a violation that may be a potential bug.
Enums§
- What it is doing when an error occurs.
- A storage error could be either a defensive check error or an error occurred when doing the actual io operation.
Structs§
- Error that occurs when operating the store.
Traits§
- Convert error to StorageError::IO();
Enums§
- Violations a store would return when running defensive check.
Traits§
- Similar to
AsRef<T>
, it does a cheap reference to reference conversion, but with the ability to returnNone
if it is unable to perform the conversion to&T
.
Structs§
Vote
represent the privilege of a node.
Traits§
- A trait defining application specific data.
- A trait defining application specific response data.
Macros§
- Define types for a Raft type configuration.
Re-exports§
Structs§
- AnyError is a serializable wrapper
Error
.
Re-exports§
pub use async_trait;